package beans;


import interfaces.ICategoriaDAO;

import interfaces.IProductoDAO;

import javax.faces.event.ValueChangeEvent;

import persistencia.FactoriaDao;

import java.util.ArrayList;
import java.util.List;

import javax.faces.component.UIComponent;
import javax.faces.component.html.HtmlDataTable;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;


public class Categoria {
    private Integer id;
    private String nombre;
    private List<SelectItem> lista;
    private List<Categoria> listaCat;
    private List<Producto> litaProd;
    private HtmlDataTable myDataTable;
    private Producto lp = new Producto();
    private String busnombre;
    private int busprecio;


    public Categoria() {
        super();
    }

    public Categoria(Integer id, String nombre) {
        super();
        this.id = id;
        this.nombre = nombre;
    }


    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getId() {
        return id;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getNombre() {
        return nombre;
    }

    public List<SelectItem> getCategorias() {
        List<SelectItem> lc = new ArrayList<SelectItem>();
        ICategoriaDAO ic = FactoriaDao.getJDBCCategoriaDAO();
        listaCat = new ArrayList();
        listaCat = ic.listarCategorias();
        for (Categoria c : listaCat) {
            lc.add(new SelectItem(c.getNombre()));
        }
        ic.Cerrar();
        return lc;
    }


    public List<SelectItem> getLproductos() {

        return lista;
    }

    public void cambiarCategoria(ValueChangeEvent valueChangeEvent) {
        ICategoriaDAO ic = FactoriaDao.getJDBCCategoriaDAO();
        Categoria car =
            buscarCategoria((String)valueChangeEvent.getNewValue());
        litaProd = ic.listarProductos(car);
        ic.Cerrar();
    }

    public Categoria buscarCategoria(String nombre) {
        Categoria cat = null;
        for (Categoria c : listaCat) {
            if (c.getNombre().equals(nombre)) {
                cat = c;
                break;
            }
        }
        return cat;
    }

    public void setLitaProd(List<Producto> litaProd) {
        this.litaProd = litaProd;
    }

    public ListDataModel getLitaProd() {
        ListDataModel lista = new ListDataModel(litaProd);
        return lista;
    }

    public String editMyData() {
        lp = (Producto)getMyDataTable().getRowData();
        return "mostrarproducto";
    }

    public void setMyDataTable(HtmlDataTable myDataTable) {
        this.myDataTable = myDataTable;
    }

    public HtmlDataTable getMyDataTable() {
        return myDataTable;
    }

    public void setMyCategoriaItem(Producto myCategoriaItem) {
        this.lp = myCategoriaItem;
    }

    public Producto getMyCategoriaItem() {
        return lp;
    }

    public void setBusprecio(Integer busprecio) {
        this.busprecio = busprecio;
    }

    public Integer getBusprecio() {
        return busprecio;
    }

    public void setBusnombre(String busnombre) {
        this.busnombre = busnombre;
    }

    public String getBusnombre() {
        return busnombre;
    }

    public Object busquedacompleta() {
        try {
            IProductoDAO ip = FactoriaDao.getJDBCProductoDAO();
            System.out.println(busnombre);
            System.out.println(busprecio);
            Producto p = new Producto();
            p.setNombreproducto(busnombre);
            p.setPrecio(busprecio);
            p.setIdCategoria(0);
            System.out.println(p.getIdProducto() + p.getNombreproducto() +
                               p.getPrecio());
            this.litaProd = ip.busquedaCompleta(p);
        } catch (Exception e) {

            System.out.println("busqueda completa" + e);
        }

        return null;
    }
}
